﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using Modelo_ETdA.Negocio.Analista;
using Modelo_ETdA.Dados;

namespace Modelo_ETdA.Interface
{
    public partial class Login : Form
    {
        private Form actual;
        private GestorAnalista gestorAna;
        DialogResult msg_res;


        public Login()
        {
            InitializeComponent();
            gestorAna = new GestorAnalista();
            msg_res = DialogResult.Cancel;
        }

        private void bregistar_Click(object sender, EventArgs e)
        {
            if (!conectaBD())
            {
                actual = new Registar(this, gestorAna);
                actual.Visible = true;
                this.Visible = false;
            }
        }

        private void blogin_Click(object sender, EventArgs e)
        {
            try
            {

                login();
            }
            
            catch (Exception ex)
            {
                MessageBox.Show("Não foi possível efectuar Login!", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        public bool conectaBD()
        {
            bool ret = AdminBD.conectarBaseDados();
            if (ret)
            {
                MessageBox.Show("Não foi possível conectar à Base de Dados!", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            return ret;
        }

        public void login()
        {

            if (msg_res != DialogResult.OK)
            {
                int sucesso;
                if (username.TextLength == 0 || password.TextLength == 0)
                {
                    msg_res = MessageBox.Show("Não preencheu os campos solicitados!", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);

                }
                else
                {
                    if (!conectaBD())
                    {
                        sucesso = gestorAna.efectuarLogin(username.Text, password.Text);
                        password.Text = "";
                        switch (sucesso)
                        {

                            case 0:
                                actual = new MenuAnalista(this, gestorAna.getAnalistaLogado(), gestorAna);
                                actual.Visible = true;
                                this.Visible = false;
                                username.Text = "";
                                break;
                            case 1:
                                msg_res = MessageBox.Show("O username e/ou password inseridos não são válidos!", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                break;

                            default:
                                msg_res = MessageBox.Show("Ocorreu um erro na conecção à base de dados!", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                break;
                        }
                    }
                }
            }
            else msg_res = DialogResult.Cancel;
        }

        private void baltpass_Click(object sender, EventArgs e)
        {
            if (!conectaBD())
            {
                actual = new AlterarPass(this, gestorAna);
                actual.Visible = true;
                this.Visible = false;
            }
        }


        private void MenuAnalista_FormClosing(Object sender, FormClosingEventArgs e)
        {

        }

        public void sair()
        {
            AdminBD.desconectarBaseDados();
            Application.Exit();
        }

        private void password_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                login();
            }
        }
        public void logout()
        {
            AdminBD.desconectarBaseDados();
        }
        private void Login_Load(object sender, EventArgs e)
        {

        }

        private void buttonAdmin_Click(object sender, EventArgs e)
        {
            MenuAdmin ma = new MenuAdmin(this);
            this.Visible = false;
            ma.Visible = true;
        }
    }
}
